package model

import "time"

type Order struct {
	ID                 uint    `json:"id" bson:"id"`
	ShopId             uint    `json:"shop_id" bson:"shop_id"`
	CUR                string  `json:"cur" bson:"cur"`
	OrderSn            string  `json:"orderSn" bson:"orderSn"`
	OrderId            int     `json:"orderId" bson:"orderId"`
	FinalPrice         float64 `json:"finalPrice" bson:"finalPrice"`
	PlacedOrderAt      int     `json:"placedOrderAt" bson:"placedOrderAt"`
	DeliverPlace       string  `json:"deliverPlace" bson:"deliverPlace"`
	Type               int     `json:"type" bson:"type"`
	PaymentAt          int     `json:"paymentAt" bson:"paymentAt"`
	PaymentType        string  `json:"paymentType" bson:"paymentType"`
	SettleModel        string  `json:"settleModel" bson:"settleModel"`
	UnShippedCountDown int     `json:"unShippedCountDown" bson:"unShippedCountDown"`
	SaleCountry        string  `json:"saleCountry" bson:"saleCountry"`
	CountdownDay       int     `json:"countdownDay" bson:"countdownDay"`
	Status             int     `json:"status" bson:"status"`
	ShippedAt          int     `json:"shippedAt,omitempty" bson:"shippedAt,omitempty"`
	SignedAt           int     `json:"signedAt,omitempty" bson:"signedAt,omitempty"`
	ClosedAt           int     `json:"closedAt,omitempty" bson:"closedAt,omitempty"`
	CanceledAt         int     `json:"canceledAt,omitempty" bson:"canceledAt,omitempty"`

	Skus *[]OrderSku `json:"skus,omitempty" bson:"skus,omitempty"`
	//Overview     *OrderOverview     `json:"overview,omitempty" bson:"overview"`
	//ItemOverview *OrderItemOverview `json:"item_overview,omitempty" bson:"item_overview"`
	//ItemCurrent  *OrderItemCurrent  `json:"item_current,omitempty" bson:"item_current"`
}

type OrderWithExtra struct {
	Order
	PreCreatedAtString                string    `json:"preCreatedAtString" bson:"preCreatedAtString"`
	OrderOrderProcess                 *OrderOrderProcess `json:"orderProcess" bson:"orderProcess"`
}

type OrderOrderProcess struct {
	LastUpdateUser     string `json:"lastUpdateUser" bson:"lastUpdateUser"`
	LastUpdateAt       time.Time `json:"lastUpdateAt" bson:"lastUpdateAt"`
	LastProcessDate    string `json:"lastProcessDate" bson:"lastProcessDate"`
	LastProcessContent string `json:"lastProcessContent" bson:"lastProcessContent"`
	UpdateAtOverTime   string `json:"updateAtOverTime" bson:"updateAtOverTime"`
}

type OrderSku struct {
	SkuImageUrl           string  `json:"skuImageUrl" bson:"skuImageUrl"`
	SkuExtAttribute       string  `json:"skuExtAttribute" bson:"skuExtAttribute"`
	ItemTitle             string  `json:"itemTitle" bson:"itemTitle"`
	OverTimeMark          int     `json:"overTimeMark" bson:"overTimeMark"`
	OverTime              int     `json:"overTime" bson:"overTime"`
	DiscountPrice         float64 `json:"discountPrice" bson:"discountPrice"`
	FinalPrice            float64 `json:"finalPrice" bson:"finalPrice"`
	CancelMark            int     `json:"cancelMark" bson:"cancelMark"`
	ItemNo                string  `json:"itemNo" bson:"itemNo"`
	OriginPrice           float64 `json:"originPrice" bson:"originPrice"`
	ItemId                uint    `json:"itemId" bson:"itemId"`
	SellerCancelQuantity  int     `json:"sellerCancelQuantity" bson:"sellerCancelQuantity"`
	TotalQuantity         int     `json:"totalQuantity" bson:"totalQuantity"`
	OverTimeQuantity      int     `json:"overTimeQuantity" bson:"overTimeQuantity"`
	SkuNo                 string  `json:"skuNo" bson:"skuNo"`
	OverTimeCountDown     int     `json:"overTimeCountDown" bson:"overTimeCountDown"`
	FordealCancelQuantity int     `json:"fordealCancelQuantity" bson:"fordealCancelQuantity"`
	BuyerCancelQuantity   int     `json:"buyerCancelQuantity" bson:"buyerCancelQuantity"`
	SkuId                 uint    `json:"skuId" bson:"skuId"`
	NormalQuantity        int     `json:"normalQuantity" bson:"normalQuantity"`
}

type OrderStatusCount struct {
	ID    int `json:"_id" bson:"_id"`
	Count int `json:"count" bson:"count"`
}

type OrderStatusCountForSummary struct {
	ID              OrderStatusCountId `json:"_id" bson:"_id"`
	LackCancelCount int                `json:"lack_cancel_count" bson:"lack_cancel_count"`
}

type OrderStatusCountId struct {
	ShopId int `json:"shop_id" bson:"shop_id"`
	Status int `json:"status" bson:"status"`
}

//{
//"TRANSPORTING": 0,
//"ALL": 127,
//"READIED": 0,
//"CLOSED": 6,
//"UNSIGNED": 0,
//"PENDING": 0,
//"FDP_OVERTIME_CANCELED": 0,
//"SIGNED": 111, 交易成功
//"RETURN_WAREHOUSE": 6,
//"CANCELED": 8,
//"IS_DELIVER": 2,
//"FDP_MERCHANT_CANCELED": 0,
//"FDP_CANCELED": 8
//}

type FOrderStatusCount struct {
	ShopId       uint `json:"shop_id"`
	Status       int  `json:"status"`
	All          int  `json:"all"`          // 全部
	UnShipped    int  `json:"un_shipped"`   // 未发货
	BeReplenish  int  `json:"be_replenish"` // 未发货-待补货
	Replenishing int  `json:"replenishing"` // 未发货-补货中
	Handler      int  `json:"handler"`      // 未发货-处理中
	Shipped      int  `json:"shipped"`      // 已发货
	Success      int  `json:"success"`      // 交易成功
	Closed       int  `json:"closed"`       // 交易关闭
	Reject       int  `json:"reject"`       // 交易关闭-已拒签
	Canceled     int  `json:"canceled"`     // 交易关闭-已取消
}

type OrderExport struct {
	ID                 uint                   `json:"id" bson:"id"`
	ShopId             uint                   `json:"shop_id" bson:"shop_id"`
	CUR                string                 `json:"cur" bson:"cur"`
	OrderSn            string                 `json:"orderSn" bson:"orderSn"`
	OrderId            int                    `json:"orderId" bson:"orderId"`
	FinalPrice         float64                `json:"finalPrice" bson:"finalPrice"`
	PlacedOrderAt      int                    `json:"placedOrderAt" bson:"placedOrderAt"`
	DeliverPlace       string                 `json:"deliverPlace" bson:"deliverPlace"`
	Type               int                    `json:"type" bson:"type"`
	PaymentAt          int                    `json:"paymentAt" bson:"paymentAt"`
	PaymentType        string                 `json:"paymentType" bson:"paymentType"`
	SettleModel        string                 `json:"settleModel" bson:"settleModel"`
	UnShippedCountDown int                    `json:"unShippedCountDown" bson:"unShippedCountDown"`
	SaleCountry        string                 `json:"saleCountry" bson:"saleCountry"`
	CountdownDay       int                    `json:"countdownDay" bson:"countdownDay"`
	Status             int                    `json:"status" bson:"status"`
	ShippedAt          int                    `json:"shippedAt,omitempty" bson:"shippedAt,omitempty"`
	SignedAt           int                    `json:"signedAt,omitempty" bson:"signedAt,omitempty"`
	ClosedAt           int                    `json:"closedAt,omitempty" bson:"closedAt,omitempty"`
	CanceledAt         int                    `json:"canceledAt,omitempty" bson:"canceledAt,omitempty"`
	Sku                map[string]interface{} `json:"skus" bson:"skus"`
}
